package com.iwhalecloud.bss.kite.cucc.service.attr.linkhandler;

import com.iwhalecloud.bss.kite.common.constant.KeyConsts;
import com.iwhalecloud.bss.kite.common.util.KiteStringUtils;
import com.iwhalecloud.bss.kite.cucc.service.attr.handler.BackCicuitAttrHandler;
import com.iwhalecloud.bss.kite.listener.handler.attr.annotation.AttrHandler;
import com.iwhalecloud.bss.kite.listener.handler.attr.impl.AbstractAttrLinkageHandler;
import com.iwhalecloud.bss.kite.manager.inst.KiteAttr;
import com.iwhalecloud.bss.kite.manager.inst.KiteAttrValue;
import com.iwhalecloud.bss.kite.manager.inst.KiteInst;
import com.iwhalecloud.bss.kite.service.attr.AttrData;
import com.iwhalecloud.bss.kite.service.scene.attr.OperateInstAttrService;
import com.ztesoft.bss.common.util.SpringUtil;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Objects;

/**
 * @Classname BackCicuitAttrLinkHandler
 * @Description 是否备份电路 属性联动
 *          =是，主用电路ID=显示+必填；是否接入在用网络，枚举值只有 否
 *          =else，主用电路ID=隐藏+非必填；是否接入在用网络，枚举值 是/否
 * @Author zhang.song
 * @Date 2021-03-10 15:58
 */
@Service
@AttrHandler(BackCicuitAttrHandler.class)
public class BackCicuitAttrLinkHandler extends AbstractAttrLinkageHandler<AttrData> {

    @Override
    public void handle(KiteAttr attr, KiteInst inst, AttrData data) {
        // 主用电路ID
        KiteAttr attr1 = inst.getAttr("2_0000097");
        // 是否接入在用网络
        KiteAttr attr2 = inst.getAttr("2_0000043");
        if (KiteStringUtils.equals("1_0000106", attr.getValue())) {
            // 是否备份电路=是
            if (Objects.nonNull(attr1)) {
                // 主用电路ID=显示+必填
                attr1.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_M);
                attr1.setIsNull("F");
            }
            if (Objects.nonNull(attr2)) {
                // 是否接入在用网络，枚举值只有 否
                List<KiteAttrValue> attrValues = attr2.getAttrValues();
                attrValues.remove(0);
                OperateInstAttrService operateInstAttrService = SpringUtil.getBean(OperateInstAttrService.class);
                operateInstAttrService.setAttrValue(inst, attr2.getFieldName(), "1_0000107", data.getSceneInstId(), null);
                attr2.setValueDesc("否");
            }
        } else {
            // 是否备份电路=否/空
            if (Objects.nonNull(attr1)) {
                // 主用电路ID=隐藏+非必填
                attr1.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_E);
                attr1.setIsNull("T");
            }
            if (Objects.nonNull(attr2)) {
                // 是否接入在用网络，枚举值 是/否
                List<KiteAttrValue> attrValues = attr2.getAttrValues();
                if(attrValues != null && attrValues.size() < 2) {
                    KiteAttrValue kiteAttrValue = new KiteAttrValue();
                    kiteAttrValue.setAttrValue("1_0000106");
                    kiteAttrValue.setAttrValueName("是");
                    kiteAttrValue.setAttrId("202012150116");
                    kiteAttrValue.setAttrValueId("20201215001198");
                    kiteAttrValue.setSortBy("1");
                    attrValues.add(0, kiteAttrValue);
                }
            }
        }
    }

    @Override
    public void handleStyle(KiteAttr attr, KiteInst inst, AttrData data) {

    }
}
